草庐IT

c++ - Clang、std::next、libstdc++ 和 constexpr-ness

全部标签

c++ - 有没有办法包含 std::filesystem 的转发 header ?

与iostreams具有forward-includeheader的方式相同#include一个只有声明的header,我认为文件系统也会有一个。但是我找不到。我有一个类用filesystem::pathconst&声明了一个成员函数作为论点,把整个#include都带进来似乎有点矫枉过正。只是为了得到path.#include//or#include...structA{...voidsave(std::experimental::filesystem::pathconst&p);} 最佳答案 有这样的标题吗?没有。你能做这样的标

c++ - 将 std::web_view 工具引入标准有什么好处?

根据TheLibraryEvolutionIncubator的最新session,获得大力支持的设施之一是std::web_view。提案在P1108R2中描述并将用于enablesmodern,natural,multimodaluserinteractionbyleveragingexistingwebstandardsandtechnologies.std::web_vieww("web_viewtestapp");w.set_uri_scheme_handler("wv",[&](conststd::string&uri,std::ostream&os){std::cout""

c++ - 如果 volatile 是不必要的,为什么 std::atomic 方法提供 volatile 重载?

thisgoodanswer说:volatileiscompletelyunnecessarywhenusedwithstd::atomic.然而,std::atomic_fecth_sub提供重载函数:templateTatomic_fetch_sub(volatilestd::atomic*obj,typenamestd::atomic::difference_typearg)noexcept;我的问题是:如果volatile对于std::atomic来说完全没有必要,为什么C++标准要为它提供一个重载函数? 最佳答案 Ifvo

c++ - `inline` , `constexpr` 或 `noexcept` 仅声明函数

对于没有主体的函数,仅用于类型检查目的或在非评估上下文中,是否有任何冒险将此类函数标记为inline,noexcept或constexpr?例如:namespace_detail{templateconstexprRresult_type(R(T::*)(Params...))noexcept;templateconstexprRresult_type(R(T::*)(Params...)const)noexcept;templateconstexprRresult_type(R(*)(Params...))noexcept;templateconstexprRresult_type(

c++ - 使用clang分析C++代码

我们想对用户的C++代码进行一些相当简单的分析,然后使用该信息来检测他们的代码(基本上是用一些检测代码重新生成他们的代码),以便用户可以对其代码进行动态分析并获得有关某些数字类型的值范围之类的统计信息。clang现在应该能够处理足够多的C++来处理我们的用户会向它抛出的代码类型——而且由于clang的C++覆盖范围在我们完成时不断改进,它会更好。那么如何将这样的clang用作独立的解析器呢?我们在想我们可以只生成一个AST,然后遍历它来寻找我们有兴趣跟踪的类的对象。有兴趣听取其他使用没有LLVM的clang的人的意见。 最佳答案 c

c++ - 关于 std::type_info 中的反射扩展的一般感觉是什么?

我注意到反射是其他语言的开发人员发现c++非常缺乏的一项功能。对于某些应用程序,我真的明白为什么!如果你有反射,那么编写IDE的自动完成之类的东西就容易多了。当然,如果我们拥有序列化API,世界会变得更简单。另一方面,C++的主要原则之一是不要为不用的东西付费。这是完全有道理的。这是我喜欢C++的地方。但我想到可能会有妥协。为什么编译器不对std::type_info结构添加扩展?不会有运行时开销。二进制文件最终可能会更大,但这可能是一个简单的编译器开关来启用/禁用,老实说,如果您真的关心空间节省,您可能会禁用异常和RTTI。有些人提到模板存在问题,但编译器已经很高兴地为模板类型生成了

c# - NUnit 不捕获 std::cerr 的输出

我在C#中有一个nunit测试,它调用C++DLL中函数的C#包装器。C++代码使用std::cerr输出各种消息。无法使用nunit-console/out/err或/xml开关重定向这些消息。在nunit(GUI版本)中,输出不会出现在任何地方。我希望能够在nunit(GUI版本)中看到这个输出。理想情况下,我希望能够在测试中访问此输出。感谢您的帮助。 最佳答案 重定向std::cerr就是用你自己的替换流缓冲区。在我们退出之前在原始缓冲区中恢复是很重要的。我不知道你的包装器是什么样的,但你可能会想出如何让它读取output.s

c++ - 如何在 QtScript 中使用 C++ std 复数

我试图找出如何在QtScript中使用复数,以便可以从QtScript调用用复数参数定义的槽。用户还应该可以从脚本访问复数的基本代数(+、-、exp、...)。只是为了说明,我想调用的是:#includetypedefcomplexComplex;classMyCppClass:publicQObject{Q_OBJECTpublic:...publicslots:voidmySignal(ComplexrCValue);!!有什么想法吗?谢谢! 最佳答案 我认为您必须在QtScript中实现复杂的代数(类似于http://exam

c++ - std::tr1::function::target<TFuncPtr> 和协变/逆变

因为我喜欢用C#和C++编程,所以我打算实现一个类似C#的事件系统,作为我计划的C++SFML-GUI的坚实基础。这只是我的代码的摘录,我希望这能澄清我的概念://Event.h//STLheaders:#include#include#include//boostheaders:#include#includenamespaceUtils{namespaceGui{#defineIMPLEMENTS_EVENT(EVENTNAME,EVENTARGS)public:\Utils::Gui::IEvent&EVENTNAME(){returnm_on##EVENTNAME;}\prot

c++ - std::string 的引用计数

我正在查看basic_string的代码(与g++4.2.1捆绑在一起)。复制构造函数使用grab()函数来“抓取”字符串的拷贝(增加其引用计数):_CharT*_M_grab(const_Alloc&__alloc1,const_Alloc&__alloc2){return(!_M_is_leaked()&&__alloc1==__alloc2)?_M_refcopy():_M_clone(__alloc1);}只有当两个字符串的分配器相同时,这才会增加引用计数——这是有道理的。但是,复制构造函数是:basic_string(constbasic_string&__str):_M_d